package com.yunhoo.checkFlow.factory.dao;

import com.yunhoo.checkFlow.model.FlowInfo;
import java.util.List;

public interface BillCheck {

    /*
     * 在审批流中，对当前审批人来说，单据所处的状态，
     *  0：等待（审批人）审批，
     *  1：（审批人）已审批通过,
     * -2: 上级未审批
     * 该方法使用预先 从数据库取得的 审批信息列表 进行判断 不会进行 迭代查询 速度更快
     */
    public String buildBillStatusForList(String number, String flowMark);

    /*
     * 在审批流中，对当前审批人来说，单据所处的状态，
     *  0：等待（审批人）审批，
     *  1：（审批人）已审批通过,
     * -2: 上级未审批
     * 该方法 使用即时查出的审批信息 进行判断 更加准确
     */
    public String buildBillStatusForSingleBill(String number, String flowMark);

    /* 审批通过 */
    public boolean pass(String billNumber, FlowInfo flowInfo);

    /* 退回修改 */
    public boolean sendBack(String billNumber, FlowInfo flowInfo);

    public int checkIfCancelAble(String billNumber);

    /* 取消审批
     * return -1 数据库异常
     *        -2 已有其他人进行过审批，无法取消
     *         1 取消成功
     *        -3 尚未审批
     */
    public int cancelCheck(String billNumber);

    public void refreshAllInfoMap();

    /* 历史审批信息 */
    public List<FlowInfo> historyFlowInfo(String billNumber);
}
